// 该文件是对axios的二次封装
// 目的是为了让在整个项目发送ajax请求时，通用的配置不用重复写

// 1. 引入ajax模块
import axios from 'axios'
// 引入发请求时添加进度条效果
import 'nprogress/nprogress.css'
import NProgress from 'nprogress'
import { getUserTempId } from '@/utils/getUserTempId'
// 2. 创建axios实例 用这个实例发送请求
const ajax = axios.create({
  // target: 'http://xmall.exrick.cn',
  baseURL: '/goods',
  timeout: 5000,
})

// 3. 设置请求拦截器
ajax.interceptors.request.use((config) => {
  NProgress.start() // 启用进度条
  // 统一添加请求头
  config.headers.userTempId = getUserTempId()
  return config
})

// 4. 设置响应拦截器
ajax.interceptors.response.use(
  (response) => {
    NProgress.done()
    return response.data
  },
  (error) => {
    // 如果发送请求出错了,会在这里统一提示错误信息
    // return error.message 如果只写这个是错误的，因为错误信息是字符串的话是非Promise值,也会认为是成功
    // 返回失败的Promise实例  目的是走程序员自己设置的错误信息
    NProgress.done()
    return Promise.reject(newError(error.message))
  }
)

// 5. 导出对象
export default ajax
